package com.yuanjun.product.dao;

import com.yuanjun.product.entity.JczProduct;
import com.yuanjun.product.entity.JczProductExample;
import java.util.List;
import java.util.Map;

import com.yuanjun.product.vo.req.ReqAdminProductListVo;
import com.yuanjun.product.vo.resp.RespAdminProductListVo;
import com.yuanjun.product.vo.resp.RespProductListVo;
import com.yuanjun.product.vo.resp.RespUpdateProductLoadDateVo;
import org.apache.ibatis.annotations.Param;

public interface JczProductMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    long countByExample(JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int deleteByExample(JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int insert(JczProduct record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int insertSelective(JczProduct record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    List<JczProduct> selectByExampleWithBLOBs(JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    List<JczProduct> selectByExample(JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    JczProduct selectByPrimaryKey(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int updateByExampleSelective(@Param("record") JczProduct record, @Param("example") JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int updateByExampleWithBLOBs(@Param("record") JczProduct record, @Param("example") JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int updateByExample(@Param("record") JczProduct record, @Param("example") JczProductExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int updateByPrimaryKeySelective(JczProduct record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int updateByPrimaryKeyWithBLOBs(JczProduct record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table jcz_product
     *
     * @mbg.generated
     */
    int updateByPrimaryKey(JczProduct record);

    List<RespProductListVo> getProductList(Map<String, Object> params);

    Long getProductListCount(Map<String, Object> params);

    int insertByAddProduct(JczProduct record);

    List<RespAdminProductListVo> selectProductListByAdmin(ReqAdminProductListVo reqAdminProductListVo);

    Long selectProductCountByAdmin(ReqAdminProductListVo reqAdminProductListVo);

    // status为0是暂时修改方法
    // todo
    List<RespAdminProductListVo> selectProductListByAdminByStatus(ReqAdminProductListVo reqAdminProductListVo);

    // status为0是暂时修改方法
    // todo
    Long selectProductCountByAdminByStatus(ReqAdminProductListVo reqAdminProductListVo);

    RespUpdateProductLoadDateVo selectProductById(Integer id);
}